[section .text]

global	out_port
global	in_port
global	port_read
global	disable_int;
global  enable_int;
; ========================================================================
;                  void out_port(u16 port, u8 value);
; ========================================================================	
out_port:
	mov edx, [esp + 4] ;port
	mov al, [esp + 4 + 4] ;value
	out dx, al
	nop
	nop
	nop
	ret
	
; ========================================================================
;                  u8 in_port(u16 port);
; ========================================================================	
in_port:
	mov edx, [esp + 4] ;port
	xor eax, eax
	in al, dx
	nop
	nop
	nop
	ret
; ========================================================================
;				-----读扇区数据到缓冲区-----
;                  void port_read(u16 port, void* buf, int n); 
; ========================================================================		
port_read:
	mov edx, [esp + 4]
	mov edi, [esp + 4 + 4]
	mov ecx, [esp + 4 + 4 + 4]
	cld
	rep insw
	ret

; ========================================================================
;                  void disable_int();
; ========================================================================	
disable_int:
	cli
	ret

; ========================================================================
;                  void enable_int();
; ========================================================================	
enable_int:
	sti
	ret
	